<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //元字符
      // . ： 匹配非换行的任意字符

      // \ ： 转译符号，把有意义的 符号 转换成没有意义的 字符，把没有意义的 字符 转换成有意义的 符号

      // \s ： 匹配空白字符（空格/制表符/...）

      // \S ： 匹配非空白字符

      // \d ： 匹配数字

      // \D ： 匹配非数字

      // \w ： 匹配数字字母下划线

      // \W ： 匹配非数字字母下划线
      var reg = /\s\d\w/;
      var str = "21 231";
      console.log(reg.test(str));
      //限定符
      //  * ： 前一个内容重复至少 0 次，也就是可以出现 0 ～ 正无穷 次

      // + ： 前一个内容重复至少 1 次，也就是可以出现 1 ～ 正无穷 次

      // ? ： 前一个内容重复 0 或者 1 次，也就是可以出现 0 ～ 1 次

      // {n} ： 前一个内容重复 n 次，也就是必须出现 n 次

      // {n,} ： 前一个内容至少出现 n 次，也就是出现 n ～ 正无穷 次

      // {n,m} ： 前一个内容至少出现 n 次至多出现 m 次，也就是出现 n ～ m 次
      var reg = /a*b+c{3}d{2,}e{3,6}f?g/;
      var str = /^abcccddeeeefg$/;
      console.log(reg.test(str));

      // 限定符是配合元字符使用的

      //         边界符
      //   ^ ： 以什么表示开头

      //   $ ： 以什么表示结尾

      //   边界符是限定字符串的开始和结束的
      // 下面表示从开头到结尾只能有数字，并且出现 3 ～ 5 次
      var reg = /^\d{3,5}$/;
      var str6 = "12345";
      console.log(reg.test(str6)); // true

      //       特殊符号
      // () ： 限定一组元素

      // [] ： 字符集合，表示写在 [] 里面的任意一个都行

      // [^] ： 反字符集合，表示写在 [^] 里面之外的任意一个都行

      // - ： 范围，比如 a-z 表示从字母 a 到字母 z 都可以

      // | ： 或，正则里面的或 a|b 表示字母 a 或者 b 都可以

      var num = /^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$/;
      var str = "256";
      console.log(num.test(str));
    </script>
  </body>
</html>
